﻿using System;
using System.Collections.Generic;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.Agentes
{
	/// <summary>
	/// 
	/// </summary>
	public interface IAgenteService
		: IDisposable
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="juntaGuid"></param>
		/// <returns></returns>
		List<Agente> FindAgentesByJunta(Guid juntaGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="juntaGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Agente> FindAgentesByJuntaAndStatus(Guid juntaGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="aclGuid"></param>
		/// <returns></returns>
		List<Agente> FindAgentesByAcl(Guid aclGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agenteGuid"></param>
		/// <returns></returns>
		Agente FindAgenteByGuid(Guid agenteGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agente"></param>
		void AddAgente(Agente agente);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agente"></param>
		void ChangeAgente(Agente agente);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agente"></param>
		void DeleteAgente(Agente agente);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agente"></param>
		/// <param name="oldPassword"></param>
		/// <param name="newPassword"></param>
		void ChangePassword(Agente agente, string oldPassword, string newPassword);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="userName"></param>
		/// <returns></returns>
		Agente FindAgenteByUsuario(string userName);
	}
}
